Skip to main content

示例:使用 OPC UA PubSub SL 图书馆

产品:CODESYS OPC UA PubSub SL

这个 OPC UA PubSub SL Example.project 示例显示了如何使用 OPC UA PubSub SL 用于通过 OPC UA 基金会定义的 Pub/Sub 协议交换消息的库。

该软件包还包含第二个示例: PubSubDataSet.project。它显示了如何使用 OPC UA PubSub SL 库以提供不同的数据集并将它们连接到 GVL 实例。

描述

除了客户端/服务器通信之外,通过 OPC UA Pub/Sub 协议进行的通信还提供了一种附加功能,可以根据 OPC UA 基金会的规则在网络订阅者之间交换数据。

数据的结构(DataSet) 可以自由定义,并由发送方和接收方事先约定。这消除了传输额外(元)数据的需要。数据传输的帮助下 OPC UA PubSub SL 根据 UADP 定义的规则通过 UDP/IP 库。

发布者将其数据发布给未知数量的订阅者。结果,发送者和接收者彼此不认识。这就是为什么接收者的数量也不会对发送者产生任何影响。由于协议的性质,无法通过该协议发送对发送方的消息是否已到达接收方的答复。如有必要,必须以特定于应用程序的方式管理此类回复。

数据根据 OPC UA 基金会的规则以二进制格式传输。这 OPC UA PubSub SL 库处理 IEC 数据类型与相应 OPC UA 数据类型之间的转换。

实施遵循以下配置文件:

  • Publisher: PubSub Publisher UADP Periodic Fixed Settings

  • Subscriber: PubSub Subscriber UADP Periodic Fixed Settings

消息长度限制为 1,500 字节 (MTU)(不支持分块网络消息)。只要时间敏感网络的规则仍然不可用,就无法满足硬实时条件。然而,实施 OPC UA PubSub SL 库尝试将抖动保持尽可能低。

该库包括以下功能块:

  • DataSet:

    定义一个 DataSet 信息

  • Configuration:

    管理共享资源,例如连接或组

  • RootDiagnostics:

    使用高级诊断数据进行通知

  • Connection:

    管理与发布者和订阅者的连接

  • ConnectionDiagnostics:

    通知有关连接的诊断数据(Connection

  • ReaderGroup:

    管理 Reader 功能块(从创建 NetworkMessage DataSet 消息)

  • ReaderGroupDiagnostics:

    通知有关的诊断数据 ReaderGroup

  • Reader:

    管理 DataSet 功能块(订阅者)

  • ReaderDiagnostics:

    通知有关诊断数据 Reader 功能块

  • WriterGroup:

    管理 Writer 功能块(从创建 NetworkMessage DataSet 消息)

  • WriterGroupDiagnostics:

    通知有关的诊断数据 WriterGroup

  • Writer:

    管理着一个 DataSet 功能块(发布者)

  • WriterDiagnostics:

    通知有关诊断数据 Writer 功能块

_example_img_opc_ua_blocks.png

支持的功能

  • 根据 OPC 10000-14 发布/订阅消息:OPC 统一架构第 14 部分:PubSub 版本 1.04

  • NetworkMessage 的最大大小:1,500 字节

  • 当前数据包大小和有效负载可以通过各自的ReaderGroup/WriterGroup和的配置来配置 DataSet 功能块。

  • 支持各自的后台任务 Connection 功能块

  • 支持以下配置文件:

    • Publisher: PubSub Publisher UADP Periodic Fixed Settings

    • Subscriber: PubSub Subscriber UADP Periodic Fixed Settings

附加信息

Device_1 应用程序展示了如何读取 NetworkMessage

Device_2 应用程序展示了如何通过所包含的功能块发送消息。

  1. 硬件

    1. 你需要两个 CODESYS 通过支持 UDP 多播的网络连接的 PLC。

    2. 在项目中,通过更新使设备配置适应设备 Device_1Device_2 到所使用的硬件。

  2. 项目中的自定义

    1. 在中设置IP地址 GlobalIP GVL 到您已配置的硬件。您将在以下位置找到此 GVL POU 区域。

    2. 将多播地址设置为网络中的空闲地址。

      注意:如果您不在专用网络中,请请求网络管理员为您分配一个免费地址。

    3. 设置端口。默认端口 4840 是 OPC UA PubSub 的推荐端口。

  3. 登录两个控制器并启动应用程序。

  4. 启动发送者和接收者:

    Device_2: PLC_PRG.xEnable := TRUE

    Device_1: Communication_PRG.xEnable := TRUE

    在接收器一侧,您现在应该看到正弦值如何变化。您可以手动更改发送方中的其他值并查看接收方中的更改。

过程. 扩展示例的建议

添加一个变量到 DataSet 已经发送了。

  1. 延长 SensorDataSet._aIndex 通过一项。选择任何数据类型。

  2. SensorDataSet.Init, 适配版本 DataSet 通过更新日期条目。

  3. 在里面 PLC_PRG 发送方的程序,创建所选数据类型的变量。赋值 txSensorDataSet.PrepareValues 到变量。

  4. rxSensorDataSet.PrepareValues,在接收端重复此步骤。这里也预先创建一个相同类型的新变量。

  5. 执行新的下载。

    新变量也应该被传输。

1. 典型配置示例
_example_img_opc_ua_pubsub_config.png


系统要求和限制

编程系统

CODESYS Development System (版本 3.5.17.0 或更高版本)

运行时系统

CODESYS Control Win (版本3.5.14.0)

注意

根据相应运行时系统的功能,可以通过单播、多播或广播发送消息。

支持的平台/设备

提示

使用 Device Reader 项目以找出您的设备支持的功能。 Device Reader 免费提供 CODESYS Store International

限制

  • 网络消息的最大长度为 1,500 字节。

    (Chunked NetworkMessages not supported)

  • 传输时间点通过任务配置确定。

    udiPublishingInterval 参数没有任何影响。

附加组件

CODESYS OPC UA PubSub SL

注意

_example_icon.png 下载 项目